match x:
    case [a] | [b]: ...
    case [a] | []: ...
    case (x, y) | (x,): ...
    case [a, _] | [a, b]: ...
    case (x, (y | z)): ...
    case [a] | [b] | [c]: ...
    case [] | [a]: ...
    case [a] | [C(x)]: ...
    case [[a] | [b]]: ...
    case [C(a)] | [C(b)]: ...
    case [C(D(a))] | [C(D(b))]: ...
    case [(a, b)] | [(c, d)]: ...
